
#输入两个日期，计算两个日期之间相差的天数

import datetime
def days(str1, str2):
    date1 = datetime.datetime.strptime(str1[0:10], "%Y-%m-%d")
    date2 = datetime.datetime.strptime(str2[0:10], "%Y-%m-%d")
    num = (date1 - date2).days
    return num

#输入一个数字n，计算n天之前是什么日期，输出日期形式为“2021-07-27”
def date1(x):
    now_time = datetime.datetime.now()
    xtime = now_time + datetime.timedelta(days=-x)
    print(xtime)

#统计当前文件夹的大小（python实现，预备知识：os模块）
import  os

def dirsize(dirpath):

    # 思路：先将文件夹里面所有的文件大小统计出来，

    # 遍历这个文件夹，得到文件夹下面所有的文件

    filenames_list = os.listdir(dirpath)

    # 遍历这个列表，判断该元素是文件还是文件夹，如果是文件，统计大小，如果是文件夹，递归调用自己

    total_size = 0

    for filename in filenames_list:

        # 拼接得到该文件的全路径

        filepath = os.path.join(dirpath, filename)

        # print(filepath)

        if os.path.isfile(filepath):

            filesize = os.path.getsize(filepath)

            total_size += filesize

        else:

            total_size += dirsize(filepath)

    # 将文件夹大小返回

    return total_size

#  如何判断一个对象是可迭代对象，迭代器对象或生成器
# 可迭代对象：可迭代对象实现了__iter__方法，该方法返回一个迭代器，凡是可以返回一个迭代器的对象都是可迭代对象；
# 迭代器：任何实现了__iter__()和__next__()都是迭代器；
# 生成器：是特殊的迭代器，不过生成器更加优雅，生成器自动实现了“迭代器协议”（即__iter__和next方法）
#  迭代器与生成器的区别
# ①生成器是生成元素的，迭代器是访问集合元素的一中方式
# ②迭代输出生成器的内容
# ③迭代器是一种支持next()操作的对象
# ④迭代器（iterator）：其中iterator对象表示的是一个数据流，可以把它看做一个有序序列，但我们不能提前知道序列的长度，只有通过nex()函数实现需要计算的下一个数据。可以看做生成器的一个子集。
#  可迭代对象与迭代器的区别
# 可迭代对象可以生成迭代器
#  如何定义一个生成器
# 生成器表达式与yield函数
# 生成地表达式：使用()生成generator， 将俩表推导式的[]改成()即可得到生成器
# yield函数：包含yield表达式的函数是特殊的函数,叫做生成器函数,被调用时将返回一个迭代器,调用时可以使用next()或send()
#  如何获取可迭代对象、迭代器与生成器中的数据
# 迭代器通过next()方法可以获取可迭代对象中的数据，生成器中的内容可以通过next（）和send（）的方式获得。


